package com.moli.iov.protocol.enums;



/**
 * 车辆上报 数据状态 异常|无效
 *
 *
 * @version $Revision$
 *
 * @since 2016年11月24日
 */
public enum SamplingStateTag implements IDictsEnumTag {
    /**
     * 抽样检测中
     */
    YES("是", (byte) 0x01),
    /**
     * 未在抽样检测中
     */
    NO("否", (byte) 0x02),
	/**
	 * 异常
	 */
	ERROR("异常", (byte) 0xFE), 
	/**
	 * 无效
	 */
	INVALID("无效", (byte) 0xFF);

	private SamplingStateTag(String key, byte value) {
		this.k = key;
		this.v = value;
	}

	private String k;

	private byte v;

	public SamplingStateTag valueOf(byte value) {
		switch (value) {
		case (byte) 0x01:
            return YES;
        case (byte) 0x02:
            return NO;
		case (byte) 0xFE:
			return ERROR;
		case (byte) 0xFF:
			return INVALID;
		default:
			return null;
		}
	}
	
	public static SamplingStateTag valOf(byte value) {
        switch (value) {
        case (byte) 0x01:
            return YES;
        case (byte) 0x02:
            return NO;
        case (byte) 0xFE:
            return ERROR;
        case (byte) 0xFF:
            return INVALID;
        default:
            return null;
        }
    }

	public static String getKey(byte value) {
		for (SamplingStateTag c : SamplingStateTag.values()) {
			if (c.getV() == value) {
				return c.k;
			}
		}
		return null;
	}
	/**
	 * 获取指定字节长度 异常状态
	 * 
	 * @param byteLen
	 * @return
	 */
	public static byte[] getError(int byteLen){
		byte[] bytes = new byte[byteLen];
		for(int i =0;i<byteLen;i++){
			if((i+1) == byteLen){
				bytes[i] = (byte)0xFE;
			}else {
				bytes[i] = (byte)0xFF;
			}
		}
		return bytes;
		
	}
	/**
	 * 获取指定字节长度 无效状态
	 * 
	 * @param byteLen
	 * @return
	 */
	public static byte[] getInvalid(int byteLen){
		byte[] bytes = new byte[byteLen];
		for(int i =0;i<byteLen;i++){
				bytes[i] = (byte)0xFF;
		}
		return bytes;
	}
	
	@Override
	public String getK() {
		return k;
	}

	@Override
	public byte getV() {
		return v;
	}

}
